package com.yuandian.customer.perception.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.customer_perception.po.DayReportParams;
import com.yuandian.api.customer_perception.po.OperatorAnalysisParams;
import com.yuandian.api.customer_perception.vo.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 说明：营业员分析mapper接口
 * @Author yanjun
 * @Date 2021/3/23 13:53
 */
@Mapper
public interface OperatorAnalysisMapper {

    /**
     * 查询营业员排名
     * @param params 营业员分析请求参数
     * @return 营业员排名vo对象集合
     */
    //@SqlAlias("查询营业员排名")
    List<OperatorRankVo> queryOperatorRank(@Param("params") OperatorAnalysisParams params);

    /**
     * 查询营业员各业务情况
     * @param params 营业员分析请求参数
     * @return 营业员排名vo对象集合
     */
    //@SqlAlias("查询营业员各业务情况")
    List<OperatorRankVo> queryOperatorBusiSituation(@Param("params") OperatorAnalysisParams params);

    /**
     * 查询营业员完成业务top
     * @param params 营业员分析请求参数
     * @return 营业员业务top vo对象集合
     */
    //@SqlAlias("查询营业员完成业务top")
    List<OperatorBusiTopVo> queryOperatorBusiTop(@Param("params") OperatorAnalysisParams params);

    /**
     * 查询营业员统计列表
     * @param params 营业员分析请求参数
     * @param page 分页对象
     * @return 操作员统计vo对象集合
     */
    //@SqlAlias("查询营业员统计列表")
    List<OperatorStatisticsVo> queryOperatorStatisticsList(
            @Param("params") OperatorAnalysisParams params, Page<OperatorStatisticsVo> page);

    /**
     * 查询营业员排序列表
     * @param params 营业员分析请求参数
     * @param page 分页对象
     * @return 营业员排序列表vo对象集合
     */
    //@SqlAlias("查询营业员排序列表")
    List<OperatorRankListVo> queryOperatorRankList(
            @Param("params") OperatorAnalysisParams params, Page<OperatorRankListVo> page);

    /**
     * 查询运维日报操作员统计topN
     * @param params 运维日报请求参数
     * @return 运维日报操作员统计top vo对象集合
     */
    //@SqlAlias("查询运维日报操作员统计topN")
    List<ReportOperatorStatisticsTopVo> queryReportOperatorStatisticsTopN(@Param("params") DayReportParams params);

    /**
     * 查询运维日报操作员统计量比例
     * @param params 运维日报请求参数
     * @return 通用返回对象
     */
    //@SqlAlias("查询运维日报操作员统计量比例")
    List<ReportOperatorProportionVo> queryReportOperatorProportion(@Param("params") DayReportParams params);
}
